home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / stuffit.arc / MAIN.ASM < prev    next >
Assembly Source File  |  1985-11-18  |  4KB  |  130 lines

  1.         PAGE    78,132  ; (CTRL-OH)  0 IBM PC PRINTER 8 LPI, CONDENSED MOD
  2.         title   STUFIT - Disk file stuffer routine
  3. CSEG    SEGMENT PARA PUBLIC 'CODE'
  4.         ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG ;ALREADY SET BY DOS LOADER
  5.  
  6.         ORG     100H                    ;Skip to the end of the PSP
  7.  
  8. ENTRY:  JMP     START                   ;COM file entry always at 100H
  9.  
  10. ;----------------------------------------------------------
  11. ;        include files
  12.  
  13.         include pspequ.asm
  14.     include    errmsg.asm
  15.  
  16.     include chkdos.asm
  17.         include avail.asm
  18.         include getdpf.asm
  19.     include    getfirst.asm
  20.         include getflen.asm
  21.         include needlen.asm
  22.         include dumfile.asm
  23.     include    cpyfile.asm
  24.     include delfile.asm
  25.     include renfile.asm
  26.  
  27. ;----------------------------------------------------------
  28. ;        constants and messages
  29.  
  30. cr        equ    0dh        ;carriage return
  31. lf        equ    0ah        ;line feed
  32. eos        equ    '$'        ;end of string character
  33.  
  34. ego         db    'V0.6, 6.13.85 Zider Brothers, San Francisco',cr,lf,eos
  35. egoln       db    $-ego-1
  36. nl          db      cr,lf,eos
  37. tfile        db    'zz.bot',0
  38. tfile2        db    'zz.top',0
  39. dumfname    db    'gobbige.zzz',0   ;default dummy file name
  40.  
  41. ;----------------------------------------------------------
  42. ;        data storage
  43.  
  44.  
  45. ;----------------------------------------------------------
  46. ;        subroutines
  47.  
  48. filecopy:
  49.         mov    cx,bufsiz    ;transfer buffer size
  50.         mov    dx,offset buf    ;transfer buffer address
  51.                     ;SI has source file address        
  52.                     ;DI has dest file address
  53.         call    cpyfile
  54.         ret
  55.  
  56. ;----------------------------------------------------------
  57. ;        main code
  58.  
  59. START   PROC    NEAR
  60.  
  61.     call    chkdos                  ;check for version 2.x+
  62.     jc    finis            ;error if carry set
  63.         call    avail                   ;get disk space available
  64.     jc    finis            ;error msg call from subroutine
  65.     call    getdpathfname           ;get file name
  66.         jc      finis                   ;if carry set--error
  67.         call    getfirst                ;get first file
  68.     jc    finis            ;etc.
  69.  
  70. nextfile:
  71.  
  72. ;----  copy file to low disk to make more room
  73. ;----  code skipped here (commented out)
  74. ;        mov    si,offset dpathfilenm
  75. ;        mov    di,offset tfile
  76. ;        call    filecopy            ;copy to lowest available
  77. ;        jc    finis
  78. ;        mov    dx,offset dpathfilenm
  79. ;        call    delfile
  80. ;        jc    finis
  81. ;        mov    dx,offset tfile
  82. ;        mov    di,offset dpathfilenm
  83. ;        call    renfile
  84. ;        jc    finis
  85.  
  86. ;----  main file stuff
  87.         mov    dx,offset dpathfilenm
  88.         call    getflen                 ;get file length
  89.         jc    finis
  90.         call    needlen                 ;compute needed dummy file length
  91.         jc    finis
  92.         mov     dx,offset dumfname    ;ASCIIZ string of dummy file
  93.         call    dumfile                 ;make dummy file
  94.         jc    finis
  95.         cli                ;disable all maskable int's
  96.         mov    si,offset dpathfilenm
  97.         mov    di,offset tfile2    ;temp file name
  98.         call    filecopy        ;copy file to temp
  99.         jc    finis
  100.         mov    dx,offset dpathfilenm
  101.         call    delfile            ;delete original file
  102.         jc    finis
  103.         mov    dx,offset dumfname    ;del 'GOBBIGE.ZZZ'
  104.         call    delfile
  105.         jc    finis
  106.         mov    dx,offset tfile2
  107.         mov    di,offset dpathfilenm
  108.         call    renfile            ;rename temp file to orig name
  109.         jc    finis
  110.         sti                ;interrupts back on
  111.         call    getnext            ;get next matching file
  112.         jc      finis
  113.         jmp     nextfile
  114.  
  115. finis:
  116.         sti                ;re-enable all int's
  117.             RET
  118. START       ENDP
  119.  
  120.  
  121. ;----------------------------------------------------------
  122. ;        buffers
  123.  
  124. endprog     equ     $
  125. bufsiz        equ    8000H            ;32KB read/write buffer
  126. buf        equ    $
  127.  
  128. CSEG        ENDS
  129.             END     ENTRY
  130.